Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / scripts / build-backend.js

Displaying Raw • Download


scripts/build-backend.js v4.6.2-rc.1 (6ba4fecd) Text, 10.06 KB

T8b949e#!/usr/bin/env node

Tff7b72const Tb4b4b4{ Te6edf3spawnSync Tb4b4b4} Tff7b72= Te6edf3requireTb4b4b4(Ta5d6ff"child_process"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3fs Tff7b72= Te6edf3requireTb4b4b4(Ta5d6ff"fs"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3path Tff7b72= Te6edf3requireTb4b4b4(Ta5d6ff"path"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3crypto Tff7b72= Te6edf3requireTb4b4b4(Ta5d6ff"crypto"Tb4b4b4)Tb4b4b4;

Tff7b72function Te6edf3getFilesTb4b4b4(Te6edf3dirTb4b4b4, Te6edf3fileList Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3files Tff7b72= Te6edf3fsTb4b4b4.Te6edf3readdirSyncTb4b4b4(Te6edf3dirTb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3file Tff7b72of Te6edf3filesTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3name Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3dirTb4b4b4, Te6edf3fileTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3fsTb4b4b4.Te6edf3statSyncTb4b4b4(Te6edf3nameTb4b4b4)Tb4b4b4.Te6edf3isDirectoryTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3getFilesTb4b4b4(Te6edf3nameTb4b4b4, Te6edf3fileListTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3fileListTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3nameTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3fileListTb4b4b4;
Tb4b4b4}

Tff7b72function Te6edf3stripDuplicateMeshchatxPublicTb4b4b4(Te6edf3buildDirTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3dup Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3buildDirTb4b4b4, Ta5d6ff"lib"Tb4b4b4, Ta5d6ff"meshchatx"Tb4b4b4, Ta5d6ff"public"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3fsTb4b4b4.Te6edf3existsSyncTb4b4b4(Te6edf3dupTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Ta5d6ff"Removing lib/meshchatx/public from cx_Freeze output."Tb4b4b4)Tb4b4b4;
Te6edf3fsTb4b4b4.Te6edf3rmSyncTb4b4b4(Te6edf3dupTb4b4b4, Tb4b4b4{ Te6edf3recursiveTff7b72: Tff7b72trueTb4b4b4, Te6edf3forceTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72function Te6edf3stripMeshchatxFrontendSourcesTb4b4b4(Te6edf3buildDirTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3fe Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3buildDirTb4b4b4, Ta5d6ff"lib"Tb4b4b4, Ta5d6ff"meshchatx"Tb4b4b4, Ta5d6ff"src"Tb4b4b4, Ta5d6ff"frontend"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3fsTb4b4b4.Te6edf3existsSyncTb4b4b4(Te6edf3feTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3keepRel Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff"public"Tb4b4b4, Ta5d6ff"repository-server-index.html"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3keepPath Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3feTb4b4b4, Te6edf3keepRelTb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3buf Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3fsTb4b4b4.Te6edf3existsSyncTb4b4b4(Te6edf3keepPathTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3buf Tff7b72= Te6edf3fsTb4b4b4.Te6edf3readFileSyncTb4b4b4(Te6edf3keepPathTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(
Ta5d6ff"Trimming meshchatx/src/frontend to repository-server-index.html only (Vue sources are unused at runtime)."
Tb4b4b4)Tb4b4b4;
Te6edf3fsTb4b4b4.Te6edf3rmSyncTb4b4b4(Te6edf3feTb4b4b4, Tb4b4b4{ Te6edf3recursiveTff7b72: Tff7b72trueTb4b4b4, Te6edf3forceTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3bufTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3dest Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3feTb4b4b4, Te6edf3keepRelTb4b4b4)Tb4b4b4;
Te6edf3fsTb4b4b4.Te6edf3mkdirSyncTb4b4b4(Te6edf3pathTb4b4b4.Te6edf3dirnameTb4b4b4(Te6edf3destTb4b4b4)Tb4b4b4, Tb4b4b4{ Te6edf3recursiveTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3fsTb4b4b4.Te6edf3writeFileSyncTb4b4b4(Te6edf3destTb4b4b4, Te6edf3bufTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72function Te6edf3stripFrozenPythonBloatTb4b4b4(Te6edf3buildDirTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3lib Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3buildDirTb4b4b4, Ta5d6ff"lib"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3fsTb4b4b4.Te6edf3existsSyncTb4b4b4(Te6edf3libTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3name Tff7b72of Tb4b4b4[Ta5d6ff"pydoc_data"Tb4b4b4, Ta5d6ff"setuptools"Tb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3p Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3libTb4b4b4, Te6edf3nameTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3fsTb4b4b4.Te6edf3existsSyncTb4b4b4(Te6edf3pTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Ta5d6ff`Ta5d6ffRemoving lib/Tffd700${Te6edf3nameTffd700}Ta5d6ff from cx_Freeze output.Ta5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3fsTb4b4b4.Te6edf3rmSyncTb4b4b4(Te6edf3pTb4b4b4, Tb4b4b4{ Te6edf3recursiveTff7b72: Tff7b72trueTb4b4b4, Te6edf3forceTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72const Te6edf3numpyRoot Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3libTb4b4b4, Ta5d6ff"numpy"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3fsTb4b4b4.Te6edf3existsSyncTb4b4b4(Te6edf3numpyRootTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3stack Tff7b72= Tb4b4b4[Te6edf3numpyRootTb4b4b4]Tb4b4b4;
Tff7b72while Tb4b4b4(Te6edf3stackTb4b4b4.Te6edf3lengthTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3dir Tff7b72= Te6edf3stackTb4b4b4.Te6edf3popTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3entriesTb4b4b4;
Tff7b72try Tb4b4b4{
Te6edf3entries Tff7b72= Te6edf3fsTb4b4b4.Te6edf3readdirSyncTb4b4b4(Te6edf3dirTb4b4b4, Tb4b4b4{ Te6edf3withFileTypesTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72continueTb4b4b4;
Tb4b4b4}
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3ent Tff7b72of Te6edf3entriesTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3entTb4b4b4.Te6edf3isDirectoryTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72continueTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3full Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3dirTb4b4b4, Te6edf3entTb4b4b4.Te6edf3nameTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3entTb4b4b4.Te6edf3name Tff7b72=== Ta5d6ff"tests"Tb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Ta5d6ff`Ta5d6ffRemoving Tffd700${Te6edf3pathTb4b4b4.Te6edf3relativeTb4b4b4(Te6edf3buildDirTb4b4b4, Te6edf3fullTb4b4b4)Tffd700}Ta5d6ff from cx_Freeze output.Ta5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3fsTb4b4b4.Te6edf3rmSyncTb4b4b4(Te6edf3fullTb4b4b4, Tb4b4b4{ Te6edf3recursiveTff7b72: Tff7b72trueTb4b4b4, Te6edf3forceTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3stackTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3fullTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tff7b72function Te6edf3stripPythonBytecodeArtifactsTb4b4b4(Te6edf3dirTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3fsTb4b4b4.Te6edf3existsSyncTb4b4b4(Te6edf3dirTb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3entries Tff7b72= Te6edf3fsTb4b4b4.Te6edf3readdirSyncTb4b4b4(Te6edf3dirTb4b4b4, Tb4b4b4{ Te6edf3withFileTypesTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3ent Tff7b72of Te6edf3entriesTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3full Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3dirTb4b4b4, Te6edf3entTb4b4b4.Te6edf3nameTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3entTb4b4b4.Te6edf3isDirectoryTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3entTb4b4b4.Te6edf3name Tff7b72=== Ta5d6ff"__pycache__"Tb4b4b4) Tb4b4b4{
Te6edf3fsTb4b4b4.Te6edf3rmSyncTb4b4b4(Te6edf3fullTb4b4b4, Tb4b4b4{ Te6edf3recursiveTff7b72: Tff7b72trueTb4b4b4, Te6edf3forceTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3stripPythonBytecodeArtifactsTb4b4b4(Te6edf3fullTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3entTb4b4b4.Te6edf3nameTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff".pyc"Tb4b4b4) Tff7b72|| Te6edf3entTb4b4b4.Te6edf3nameTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff".pyo"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3stem Tff7b72= Te6edf3entTb4b4b4.Te6edf3nameTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/\.pyc$/iTb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/\.pyo$/iTb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3siblingPy Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3dirTb4b4b4, Ta5d6ff`Tffd700${Te6edf3stemTffd700}Ta5d6ff.pyTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3fsTb4b4b4.Te6edf3existsSyncTb4b4b4(Te6edf3siblingPyTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3fsTb4b4b4.Te6edf3unlinkSyncTb4b4b4(Te6edf3fullTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tff7b72function Te6edf3generateManifestTb4b4b4(Te6edf3buildDirTb4b4b4, Te6edf3manifestPathTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Ta5d6ff"Generating backend integrity manifest..."Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3files Tff7b72= Te6edf3getFilesTb4b4b4(Te6edf3buildDirTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3manifest Tff7b72= Tb4b4b4{
Te6edf3_metadataTff7b72: Tb4b4b4{
Te6edf3versionTff7b72: T79c0ff1Tb4b4b4,
Te6edf3dateTff7b72: Tff7b72new Tffa657DateTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toISOStringTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"T"Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4,
Te6edf3timeTff7b72: Tff7b72new Tffa657DateTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toISOStringTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"T"Tb4b4b4)Tb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"."Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3filesTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;

Tff7b72for Tb4b4b4(Tff7b72const Te6edf3file Tff7b72of Te6edf3filesTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3relativePath Tff7b72= Te6edf3pathTb4b4b4.Te6edf3relativeTb4b4b4(Te6edf3buildDirTb4b4b4, Te6edf3fileTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3relativePath Tff7b72=== Ta5d6ff"backend-manifest.json"Tb4b4b4) Tff7b72continueTb4b4b4;
Tff7b72const Te6edf3fileBuffer Tff7b72= Te6edf3fsTb4b4b4.Te6edf3readFileSyncTb4b4b4(Te6edf3fileTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3hash Tff7b72= Te6edf3cryptoTb4b4b4.Te6edf3createHashTb4b4b4(Ta5d6ff"sha256"Tb4b4b4)Tb4b4b4.Te6edf3updateTb4b4b4(Te6edf3fileBufferTb4b4b4)Tb4b4b4.Te6edf3digestTb4b4b4(Ta5d6ff"hex"Tb4b4b4)Tb4b4b4;
Te6edf3manifestTb4b4b4.Te6edf3filesTb4b4b4[Te6edf3relativePathTb4b4b4] Tff7b72= Te6edf3hashTb4b4b4;
Tb4b4b4}

Te6edf3fsTb4b4b4.Te6edf3writeFileSyncTb4b4b4(Te6edf3manifestPathTb4b4b4, Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Te6edf3manifestTb4b4b4, Tff7b72nullTb4b4b4, T79c0ff2Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Ta5d6ff`Ta5d6ffManifest saved to Tffd700${Te6edf3manifestPathTffd700}Ta5d6ff (Tffd700${Tffa657ObjectTb4b4b4.Te6edf3keysTb4b4b4(Te6edf3manifestTb4b4b4.Te6edf3filesTb4b4b4)Tb4b4b4.Te6edf3lengthTffd700}Ta5d6ff files)Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72function Te6edf3failOnSpawnResultTb4b4b4(Te6edf3stepNameTb4b4b4, Te6edf3resultTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3resultTb4b4b4.Te6edf3errorTb4b4b4) Tb4b4b4{
Tff7b72throw Te6edf3resultTb4b4b4.Te6edf3errorTb4b4b4;
Tb4b4b4}

Tff7b72if Tb4b4b4(Te6edf3resultTb4b4b4.Te6edf3signalTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff`Tffd700${Te6edf3stepNameTffd700}Ta5d6ff was terminated by signal Tffd700${Te6edf3resultTb4b4b4.Te6edf3signalTffd700}Ta5d6ff.Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3resultTb4b4b4.Te6edf3signal Tff7b72=== Ta5d6ff"SIGKILL"Tb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(
Ta5d6ff"Build process was force-killed (often OOM killer). This is likely memory pressure, not a normal script error."
Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3processTb4b4b4.Te6edf3exitTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72if Tb4b4b4(Te6edf3resultTb4b4b4.Te6edf3status Tff7b72!== T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff`Tffd700${Te6edf3stepNameTffd700}Ta5d6ff exited with status Tffd700${Te6edf3resultTb4b4b4.Te6edf3statusTffd700}Ta5d6ff.Ta5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3processTb4b4b4.Te6edf3exitTb4b4b4(Te6edf3resultTb4b4b4.Te6edf3status Tff7b72|| T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72function Te6edf3fileMtimeMsTb4b4b4(Te6edf3filePathTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3fsTb4b4b4.Te6edf3existsSyncTb4b4b4(Te6edf3filePathTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3fsTb4b4b4.Te6edf3statSyncTb4b4b4(Te6edf3filePathTb4b4b4)Tb4b4b4.Te6edf3mtimeMsTb4b4b4;
Tb4b4b4}

Tff7b72function Te6edf3shouldRefreshLicenseArtifactsTb4b4b4(Te6edf3repoRootTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3forceRefresh Tff7b72=
Te6edf3processTb4b4b4.Te6edf3envTb4b4b4.Te6edf3MESHCHATX_FORCE_LICENSE_ARTIFACTS Tff7b72=== Ta5d6ff"1" Tff7b72||
Te6edf3processTb4b4b4.Te6edf3envTb4b4b4.Te6edf3MESHCHATX_FORCE_LICENSE_ARTIFACTS Tff7b72=== Ta5d6ff"true"Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3forceRefreshTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3dataDir Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3repoRootTb4b4b4, Ta5d6ff"meshchatx"Tb4b4b4, Ta5d6ff"src"Tb4b4b4, Ta5d6ff"backend"Tb4b4b4, Ta5d6ff"data"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3noticesPath Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3dataDirTb4b4b4, Ta5d6ff"THIRD_PARTY_NOTICES.txt"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3frontendLicensesPath Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3dataDirTb4b4b4, Ta5d6ff"licenses_frontend.json"Tb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3outputTimes Tff7b72= Tb4b4b4[Te6edf3fileMtimeMsTb4b4b4(Te6edf3noticesPathTb4b4b4)Tb4b4b4, Te6edf3fileMtimeMsTb4b4b4(Te6edf3frontendLicensesPathTb4b4b4)Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3outputTimesTb4b4b4.Te6edf3someTb4b4b4(Tb4b4b4(Te6edf3tTb4b4b4) Tb4b4b4=> Te6edf3t Tff7b72== Tff7b72nullTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3oldestOutput Tff7b72= Tffa657MathTb4b4b4.Te6edf3minTb4b4b4(Tb4b4b4...Te6edf3outputTimesTb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3inputFiles Tff7b72= Tb4b4b4[
Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3repoRootTb4b4b4, Ta5d6ff"pyproject.toml"Tb4b4b4)Tb4b4b4,
Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3repoRootTb4b4b4, Ta5d6ff"poetry.lock"Tb4b4b4)Tb4b4b4,
Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3repoRootTb4b4b4, Ta5d6ff"package.json"Tb4b4b4)Tb4b4b4,
Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3repoRootTb4b4b4, Ta5d6ff"pnpm-lock.yaml"Tb4b4b4)Tb4b4b4,
Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3repoRootTb4b4b4, Ta5d6ff"meshchatx"Tb4b4b4, Ta5d6ff"src"Tb4b4b4, Ta5d6ff"backend"Tb4b4b4, Ta5d6ff"licenses_collector.py"Tb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4;

Tff7b72let Te6edf3newestInput Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3inputFile Tff7b72of Te6edf3inputFilesTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3mtime Tff7b72= Te6edf3fileMtimeMsTb4b4b4(Te6edf3inputFileTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3mtime Tff7b72!= Tff7b72null Tff7b72&& Te6edf3mtime Tff7b72> Te6edf3newestInputTb4b4b4) Tb4b4b4{
Te6edf3newestInput Tff7b72= Te6edf3mtimeTb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72return Te6edf3newestInput Tff7b72>= Te6edf3oldestOutputTb4b4b4;
Tb4b4b4}

Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3platform Tff7b72= Te6edf3processTb4b4b4.Te6edf3envTb4b4b4.Te6edf3PLATFORM Tff7b72|| Te6edf3processTb4b4b4.Te6edf3platformTb4b4b4;
Tff7b72const Te6edf3arch Tff7b72= Te6edf3processTb4b4b4.Te6edf3envTb4b4b4.Te6edf3ARCH Tff7b72|| Te6edf3processTb4b4b4.Te6edf3archTb4b4b4;
Tff7b72const Te6edf3isWin Tff7b72= Te6edf3platform Tff7b72=== Ta5d6ff"win32" Tff7b72|| Te6edf3platform Tff7b72=== Ta5d6ff"win"Tb4b4b4;
Tff7b72const Te6edf3isDarwin Tff7b72= Te6edf3platform Tff7b72=== Ta5d6ff"darwin"Tb4b4b4;
Tff7b72const Te6edf3targetName Tff7b72= Te6edf3isWin Tff7b72? Ta5d6ff"ReticulumMeshChatX.exe" Tff7b72: Ta5d6ff"ReticulumMeshChatX"Tb4b4b4;

Tff7b72let Te6edf3platformFolder Tff7b72= Ta5d6ff"linux"Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3isWinTb4b4b4) Tb4b4b4{
Te6edf3platformFolder Tff7b72= Ta5d6ff"win32"Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3isDarwinTb4b4b4) Tb4b4b4{
Te6edf3platformFolder Tff7b72= Ta5d6ff"darwin"Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3buildDirRelative Tff7b72= Ta5d6ff`Ta5d6ffbuild/exe/Tffd700${Te6edf3platformFolderTffd700}Ta5d6ff-Tffd700${Te6edf3archTffd700}Ta5d6ff`Tb4b4b4;
Tff7b72const Te6edf3buildDir Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3__dirnameTb4b4b4, Ta5d6ff".."Tb4b4b4, Te6edf3buildDirRelativeTb4b4b4)Tb4b4b4;

T8b949e// Allow overriding the python command
Tff7b72const Te6edf3pythonCmd Tff7b72= Te6edf3processTb4b4b4.Te6edf3envTb4b4b4.Te6edf3PYTHON_CMD Tff7b72|| Ta5d6ff"poetry run python"Tb4b4b4;

Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(
Ta5d6ff`Ta5d6ffBuilding backend for Tffd700${Te6edf3platformTffd700}Ta5d6ff (target: Tffd700${Te6edf3targetNameTffd700}Ta5d6ff, output: Tffd700${Te6edf3buildDirRelativeTffd700}Ta5d6ff) using: Tffd700${Te6edf3pythonCmdTffd700}Ta5d6ff`
Tb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3env Tff7b72= Tb4b4b4{
Tb4b4b4...Te6edf3processTb4b4b4.Te6edf3envTb4b4b4,
Te6edf3CX_FREEZE_TARGET_NAMETff7b72: Te6edf3targetNameTb4b4b4,
Te6edf3CX_FREEZE_BUILD_EXETff7b72: Te6edf3buildDirRelativeTb4b4b4,
Te6edf3PYTHONDONTWRITEBYTECODETff7b72: Ta5d6ff"1"Tb4b4b4,
Tb4b4b4}Tb4b4b4;

Tff7b72const Te6edf3cmdParts Tff7b72= Te6edf3pythonCmdTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff/\s+/Tb4b4b4)Tb4b4b4.Te6edf3filterTb4b4b4(Tffa657BooleanTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3cmd Tff7b72= Te6edf3cmdPartsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3baseArgs Tff7b72= Te6edf3cmdPartsTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3licensesArgs Tff7b72= Tb4b4b4[Tb4b4b4...Te6edf3baseArgsTb4b4b4, Ta5d6ff"-m"Tb4b4b4, Ta5d6ff"meshchatx.src.backend.licenses_collector"Tb4b4b4, Ta5d6ff"--write-artifacts"Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3args Tff7b72= Tb4b4b4[Tb4b4b4...Te6edf3baseArgsTb4b4b4, Ta5d6ff"cx_setup.py"Tb4b4b4, Ta5d6ff"build"Tb4b4b4]Tb4b4b4;

Tff7b72let Te6edf3spawnCmd Tff7b72= Te6edf3cmdTb4b4b4;
Tff7b72let Te6edf3spawnArgs Tff7b72= Te6edf3licensesArgsTb4b4b4;
Tff7b72const Te6edf3rosettaX64 Tff7b72= Te6edf3isDarwin Tff7b72&& Te6edf3arch Tff7b72=== Ta5d6ff"x64" Tff7b72&& Te6edf3processTb4b4b4.Te6edf3arch Tff7b72=== Ta5d6ff"arm64"Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3rosettaX64Tb4b4b4) Tb4b4b4{
Te6edf3spawnCmd Tff7b72= Ta5d6ff"arch"Tb4b4b4;
Te6edf3spawnArgs Tff7b72= Tb4b4b4[Ta5d6ff"-x86_64"Tb4b4b4, Te6edf3cmdTb4b4b4, Tb4b4b4...Te6edf3licensesArgsTb4b4b4]Tb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3repoRoot Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3__dirnameTb4b4b4, Ta5d6ff".."Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3shouldRefreshLicenseArtifactsTb4b4b4(Te6edf3repoRootTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Ta5d6ff"Generating embedded third-party license artifacts..."Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3licensesResult Tff7b72= Te6edf3spawnSyncTb4b4b4(Te6edf3spawnCmdTb4b4b4, Te6edf3spawnArgsTb4b4b4, Tb4b4b4{
Te6edf3stdioTff7b72: Ta5d6ff"inherit"Tb4b4b4,
Te6edf3shellTff7b72: Tff7b72falseTb4b4b4,
Te6edf3envTff7b72: Te6edf3envTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3failOnSpawnResultTb4b4b4(Ta5d6ff"License artifact generation"Tb4b4b4, Te6edf3licensesResultTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Ta5d6ff"Skipping license artifact generation (artifacts are up to date)."Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Te6edf3spawnCmd Tff7b72= Te6edf3cmdTb4b4b4;
Te6edf3spawnArgs Tff7b72= Te6edf3argsTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3rosettaX64Tb4b4b4) Tb4b4b4{
Te6edf3spawnCmd Tff7b72= Ta5d6ff"arch"Tb4b4b4;
Te6edf3spawnArgs Tff7b72= Tb4b4b4[Ta5d6ff"-x86_64"Tb4b4b4, Te6edf3cmdTb4b4b4, Tb4b4b4...Te6edf3argsTb4b4b4]Tb4b4b4;
Tb4b4b4}

Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Ta5d6ff"Running cx_Freeze backend build..."Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3result Tff7b72= Te6edf3spawnSyncTb4b4b4(Te6edf3spawnCmdTb4b4b4, Te6edf3spawnArgsTb4b4b4, Tb4b4b4{
Te6edf3stdioTff7b72: Ta5d6ff"inherit"Tb4b4b4,
Te6edf3shellTff7b72: Tff7b72falseTb4b4b4,
Te6edf3envTff7b72: Te6edf3envTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3failOnSpawnResultTb4b4b4(Ta5d6ff"Backend build"Tb4b4b4, Te6edf3resultTb4b4b4)Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3fsTb4b4b4.Te6edf3existsSyncTb4b4b4(Te6edf3buildDirTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3stripDuplicateMeshchatxPublicTb4b4b4(Te6edf3buildDirTb4b4b4)Tb4b4b4;
Te6edf3stripMeshchatxFrontendSourcesTb4b4b4(Te6edf3buildDirTb4b4b4)Tb4b4b4;
Te6edf3stripFrozenPythonBloatTb4b4b4(Te6edf3buildDirTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3isDarwinTb4b4b4) Tb4b4b4{
Te6edf3stripPythonBytecodeArtifactsTb4b4b4(Te6edf3buildDirTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3manifestPath Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3buildDirTb4b4b4, Ta5d6ff"backend-manifest.json"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3skipManifest Tff7b72=
Te6edf3processTb4b4b4.Te6edf3envTb4b4b4.Te6edf3MESHCHATX_SKIP_BACKEND_MANIFEST Tff7b72=== Ta5d6ff"1" Tff7b72||
Te6edf3processTb4b4b4.Te6edf3envTb4b4b4.Te6edf3MESHCHATX_SKIP_BACKEND_MANIFEST Tff7b72=== Ta5d6ff"true"Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3skipManifestTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3fsTb4b4b4.Te6edf3existsSyncTb4b4b4(Te6edf3manifestPathTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3fsTb4b4b4.Te6edf3unlinkSyncTb4b4b4(Te6edf3manifestPathTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(
Ta5d6ff"Skipping backend-manifest.json (MESHCHATX_SKIP_BACKEND_MANIFEST); universal merge requires identical non-binary files."
Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3generateManifestTb4b4b4(Te6edf3buildDirTb4b4b4, Te6edf3manifestPathTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff`Ta5d6ffBuild directory not found (Tffd700${Te6edf3buildDirTffd700}Ta5d6ff), manifest generation skipped.Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3errorTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Build failed:"Tb4b4b4, Te6edf3errorTb4b4b4.Te6edf3messageTb4b4b4)Tb4b4b4;
Te6edf3processTb4b4b4.Te6edf3exitTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────